#include "lrcpage.h"
#include "ui_lrcpage.h"

LrcPage::LrcPage(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::LrcPage)
{
    ui->setupUi(this);
    qDebug()<<"lrcpage create";
    setWindowFlag(Qt::FramelessWindowHint);

}

LrcPage::~LrcPage()
{
    delete ui;
}

bool LrcPage::parseLrc(const QString &lrcPath)
{
    lrcLines.clear();
     // 打开歌词⽂件
     QFile lrcFile(lrcPath);
     if(!lrcFile.open(QFile::ReadOnly))
     {
     qDebug()<<"打开文件:"<<lrcPath;
     return false;
     }
     qDebug()<<lrcFile.size();
     while(!lrcFile.atEnd())
     {
     QString lrcWord = lrcFile.readLine(1024);
     qDebug()<<"lrcWord"<<lrcWord.size();
     // [00:17.94]那些失眠的⼈啊 你们还好吗
     // [0:58.600.00]你像⼀只⻜来⻜去的蝴蝶
     int left = lrcWord.indexOf('[');
     int right = lrcWord.indexOf(']');
     // 解析时间
     qint64 lineTime = 0;
     int start = 0;
     int end = 0;
     QString time = lrcWord.mid(left, right-left+1);
     // 解析分钟
     start = 1;
     end = time.indexOf(':');
     lineTime += lrcWord.mid(start, end-start).toInt()*60*1000;
     // 解析秒
     start = end + 1;
     end = time.indexOf('.', start);
     lineTime += lrcWord.mid(start, end-start).toInt()*1000;
     // 解析毫秒
     start = end+1;
     end = time.indexOf('.', start);
     lineTime += lrcWord.mid(start, end-start).toInt();
     // 解析歌词
     QString word = lrcWord.mid(right+1).trimmed();
     lrcLines.push_back(LyricLine(lineTime, word.trimmed()));
     }
     // 测试验证
     for(auto word : lrcLines)
      {
      qDebug()<<word.time<<"  "<<word.text;
      }
     return true;
}

int LrcPage::getLineLrcWordIndex(qint64 pos)
{
    // 如果歌词是空的，返回-1
     if(lrcLines.isEmpty())
     {
     return -1;
     }
     if(lrcLines[0].time > pos)
     {
     return 0;
     }
     // 通过时间⽐较，获取下标
     for(int i = 1; i < lrcLines.size(); ++i)
     {
     if(pos > lrcLines[i-1].time && pos <= lrcLines[i].time)
     {
     return i-1;
     }
     }
     // 如果没有找到，返回最后⼀⾏
     return lrcLines.size()-1;
}

QString LrcPage::getLineLrcWord(qint64 index)
{
    if(index < 0 || index >= lrcLines.size())
     {
     return "";
     }
    return lrcLines[index].text;
}

void LrcPage::showLrcWord(int time)
{
    // 先要获取歌词--根据歌词的时间进⾏获取
     int index = getLineLrcWordIndex(time);
     if(-1 == index)
     {
     ui->line1->setText("");
     ui->line2->setText("");
     ui->line3->setText("");
     ui->lineCenter->setText("当前歌曲⽆歌词");
     ui->line4->setText("");
     ui->line5->setText("");
     ui->line6->setText("");
     }else
     {
     ui->line1->setText(getLineLrcWord(index-3));
     ui->line2->setText(getLineLrcWord(index-2));
     ui->line3->setText(getLineLrcWord(index-1));
     ui->lineCenter->setText(getLineLrcWord(index));
     ui->line4->setText(getLineLrcWord(index+1));
     ui->line5->setText(getLineLrcWord(index+2));
     ui->line6->setText(getLineLrcWord(index+3));
     }
}


void LrcPage::on_hideBtn_clicked()
{
    hide();
}
